package day09;

// 另类加法
// 按位与且左移 + 按位异或

public class Main3 {
    public int addAB(int A, int B) {
        // write code here
        if(A == 0) {
            return B;
        }

        int carry = 0; // 进位
        int sum = 0; // 非进位的结果

        while (B != 0) {
            sum = A ^ B;  // 非进位就进行异或
            carry = (A & B) << 1;  // 进位就是按位与 且 左移
            // 然后进行更新
            B = carry; // 直到进位的为0！
            A = sum;
        }
        return A;
    }

    public static void main(String[] args) {
        Main3 main3 = new Main3();
        System.out.println(main3.addAB(8,9));
    }
}
